﻿using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Linq;
using System.Web;
using System.Web.Configuration;

namespace FlyingCircusWebIS.Models
{
    /**
     *  Esta classe representa um Singleton de uma conexão com o banco de dados.
     *  Ela garante que apenas uma instância dessa classe será compartilhada em todo o sistema.
     *  Abrir uma conexão com o banco de dados, muitas vezes pode ser um processo demorado.
     *  Assim evita-se abrir e fechar a conexão toda hora p/ cada comando, com isso há um ganho de performance.
     *  
     *  Obs: os bancos de dados mais recentes conseguem atacar multiplos comandos numa mesma conexão estabelecida.
     *  Então não há problema em compartilhar uma mesma conexão com os diversos usuários do sistema.
     */
    public class GerenciadorConexao
    {
        private static OleDbConnection conexao;
        private static string strConexao = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        private GerenciadorConexao()
        { }

        public static OleDbConnection Conexao
        {
            get
            {
                if (conexao == null)
                    conexao = new OleDbConnection(strConexao);

                if (conexao.State == System.Data.ConnectionState.Closed)
                    conexao.Open();

                return conexao;
            }
        }

    }
}